home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / misc / amag / sh9301c.lha / Windows(S.106) / Listing6.txt < prev    next >
Text File  |  1992-11-20  |  6KB  |  200 lines

  1. switch (Message)
  2.    {
  3.  
  4.     case WM_INITMENU: // Wenn Menü aufgebaut wird:
  5.          // Nicht verfügbare Menüs abblenden, z.B. "Paste",
  6.          // wenn kein Text in der Zwischenablage steht.
  7.          if(OpenClipboard(hEditWnd))
  8.          {
  9.            if(IsClipboardFormatAvailable(CF_TEXT))
  10.               EnableMenuItem(wParam, IDM_B_PASTE, MF_ENABLED);
  11.             else
  12.               EnableMenuItem(wParam, IDM_B_PASTE, MF_GRAYED);
  13.            CloseClipboard();
  14.          }
  15.          break;
  16.  
  17.     case WM_COMMAND:     // Window-Kommando
  18.  
  19.          switch (wParam)  // Bearbeite Menüs
  20.            {
  21.              case IDM_D_NEU: // Neue Datei
  22.                  /* Wenn vorherige Datei ungesichert,
  23.                  Frage ob sichern. */
  24.                  if (!QuerySaveFile(hWnd))
  25.                    return (NULL);
  26.                  bChanges = FALSE; // Nichts geändert
  27.                  FileName[0] = 0;  // Kein File-Name
  28.                  // Lege neuen Edit-Puffer an:
  29.                  SetNewBuffer(hWnd, NULL, Untitled);
  30.                  break;
  31.  
  32.             case IDM_D_OEFFNEN:
  33.                  // Teste, ob aktuelle Datei gesichert
  34.                  if (!QuerySaveFile(hWnd))
  35.                    return (NULL);
  36.                  // Zeige Standard-Dialog, bewerte User-Wahl,
  37.                  // lese Datei ein.
  38.                  break;
  39.  
  40.             case IDM_D_SICHERN:
  41.                  // Wenn Filename leer, gehe zu "Sichern unter"
  42.                  if (!FileName[0])
  43.                    goto saveas;
  44.                  // Wenn File geändert, speicher ihn
  45.                  if (bChanges)
  46.                    SaveFile(hWnd);
  47.                  break;
  48.  
  49.             case IDM_D_SICHERNUNTER:
  50. saveas:          // Zeige Standard-Dialog, bewerte User-Wahl,
  51.                  // lese Datei ein.
  52.                  SaveFile(hWnd);
  53.                  break;
  54.  
  55.             case IDM_D_DRUCKEN:
  56.                  // Teste, ob Drucker verfügbar
  57.                  hPr = GetPrinterDC();
  58.                  if (!hPr)
  59.                    { /* Meldung und Abbruch*/ }
  60.                  // Definniere  Abort-Dialog.
  61.                  // Beschaffe Auflösung einer Druckerseite
  62.                  // und Zeilenhöhe. Rechne Anzahl Zeilen/Seite.
  63.                  // Lege kompatiblen DC an.
  64.                  // Drucke via TextOut().
  65.                  // Letzte Seit vorschieben und Ende
  66.                  // Abort-Dialog abbauen
  67.                  // Speicher freigeben
  68.                  break;
  69.  
  70.             case IDM_D_DRUCKERINSTALLATION:
  71.                  /* Beschaffe Druckerkontext. Funktion
  72.                     ermittelt auch Druckerdaten.
  73.                  */
  74.                  // Lade Druckertreiber (Name in WIN.INI)
  75.                  /* Ermittle Zeiger auf Druckerinst.-Funktion
  76.                     und rufe sie auf */
  77.                  lpfnDevmode = GetProcAddress(hLibrary,
  78.                                               "EXTDEVICEMODE");
  79.                  nResult = (*lpfnDevmode) (hWnd, hLibrary,
  80.                                            &devmode,
  81.                                            (LPSTR) szDevice,
  82.                                            (LPSTR) szOutput,
  83.                                            NULL, NULL,
  84.                                            DM_COPY | DM_PROMPT);
  85.                  break;
  86.  
  87.             case IDM_D_INFO: // Zeige About-Dialog
  88.                  lpfnProcAbout = MakeProcInstance(About, hInst);
  89.                  DialogBox(hInst, "AboutBox", hWnd,
  90.                            lpfnProcAbout);
  91.                  FreeProcInstance(lpfnProcAbout);
  92.                  break;
  93.  
  94.  
  95.             case IDM_D_BEENDEN:
  96.                  QuerySaveFile(hWndMain);
  97.                  PostMessage(hWnd, WM_CLOSE, 0,0);
  98.                  break;
  99.  
  100.             // Das ganze Bearbeiten-Menü eines Editors
  101.             // kann Windows erledigen
  102.             case IDM_B_UNDO:
  103.                  SendMessage(hEditWnd, WM_UNDO, 0, 0L);
  104.                  break;
  105.  
  106.             case IDM_B_COPY:
  107.                  SendMessage(hEditWnd, WM_COPY, 0, 0L);
  108.                  break;
  109.  
  110.             case IDM_B_CUT:
  111.                  SendMessage(hEditWnd, WM_CUT, 0, 0L);
  112.                  break;
  113.  
  114.             case IDM_B_PASTE:
  115.                  SendMessage(hEditWnd, WM_PASTE, 0, 0L);
  116.                  break;
  117.  
  118.             case IDM_B_ALL:
  119.                  SendMessage(hEditWnd, EM_SETSEL, 0,
  120.                              MAKELONG(0, 32767));
  121.                  break;
  122.  
  123.             case IDM_B_CLEAR:
  124.                  SendMessage(hEditWnd, WM_CLEAR, 0, 0L);
  125.                  break;
  126.  
  127.             case IDM_B_DEL:
  128.                  OpenClipboard(hEditWnd);
  129.                  EmptyClipboard();
  130.                  CloseClipboard();
  131.                  break;
  132.  
  133.              case IDM_B_FIND:
  134.                   // Läuft via Standard-Dialog
  135.                    break;
  136.  
  137.  
  138.              case IDM_B_REPLACE:
  139.                   // Läuft via Standard-Dialog
  140.                    break;
  141.             default:
  142.                return DefWindowProc(hWnd, Message,
  143.                                     wParam, lParam);
  144.  
  145.         } // End of switch wParam
  146.  
  147.  
  148.     // Weitere Windows-Messages
  149.   case WM_QUERYENDSESSION:
  150.       /* Wenn Windows beendet wird und
  151.          ein File ungesichert, Frage ob OK. */
  152.        return (QuerySaveFile(hWnd));
  153.  
  154.   case WM_SETFOCUS: // Window hat Fokus erhalten
  155.          // Setze Caret-Cursor
  156.          break;
  157.  
  158.     case WM_SIZE: // Größe neu
  159.          // in lParam steht neue Width u. Height
  160.          MoveWindow(hEditWnd, 0, 0, LOWORD(lParam),
  161.                     HIWORD(lParam), TRUE);
  162.          break;
  163.  
  164.     case WM_PAINT:
  165.          // Clear Background
  166.          memset(&ps, 0x00, sizeof(PAINTSTRUCT));
  167.          hDC = BeginPaint(hWnd, &ps);
  168.          SetBkMode(hDC, TRANSPARENT);
  169.          EndPaint(hWnd, &ps);
  170.          break;
  171.  
  172.     case WM_CLOSE:
  173.          DestroyWindow(hWnd);
  174.          if (hWnd == hWndMain)
  175.            PostQuitMessage(0);
  176.         break;
  177.  
  178.     default:
  179.          return DefWindowProc(hWnd, Message, wParam, lParam);
  180.    }
  181.  
  182.  
  183.  
  184. BOOL FAR PASCAL About(HWND hDlg, WORD Message,
  185.                       WORD wParam, LONG lParam)
  186. {
  187.    switch (Message) {
  188.          case WM_INITDIALOG:
  189.                cwCenter(hDlg, 0);
  190.                return TRUE;
  191.  
  192.          case WM_COMMAND:
  193.               if (wParam == IDOK || wParam == IDCANCEL)
  194.                  return EndDialog(hDlg, TRUE);
  195.          break;
  196.    }
  197.   return FALSE;
  198. }
  199.  
  200.